Walidacja danych GET w .htaccess
Dzisiaj trochę o bezpieczeństwie stron internetowych. Temat po części jest powiązany z przyjaznymi linkami. Czytając mojego bloga, często można trafić na stwierdzenie, że „leniwy programista, to dobry programista”, dlatego pokażę jak to w praktyce wykorzystać wraz z małą wskazówką pozycjonerską.
Przeglądając strony internetowe, a nawet mojego bloga, można zauważyć, że zmienne GET (czyli takie przesyłane poprzez adres w przeglądarce) są liczbami. Przyczyna jest bardzo prosta. Dużo łatwiej sprawdzić czy dana zmienna jest poprawną daną czy nie.
W PHP jest jest nawet gotowa funkcja, która zrobi to za nas i nie trzeba znać wyrażeń regularnych.
Dodatkowo jeżeli nasz serwis korzysta z baz danych, to wykonanie ataku mysql injection jest prawie niemożliwe (próba wstrzyknięcia złośliwego kodu SQL zostanie obsłużona przez odpowiedni warunek lub wyjątek).
Sztuczka
Jeżeli serwis korzysta z przyjaznych linków, co dzisiaj jest bardzo popularne, taką prostą walidację danych można zrobić poprzez .htaccess, zaś jeżeli regułka nie będzie pasowała do wzoru to wystarczy wyświetlić odpowiednią informację (np. stronę z kodem błędu 404). Dla przykładu, jeżeli chcemy aby nasz serwis miał następujący wygląd linków dla sekcji z artykułami:
http://adres.pl/artykul/666/przyjazna-nazwa-artykulu-w-linku
To nasza regułka powinna wyglądać następująco:
RewriteRule ^artykul/([0-9]{1,4})/(.*)?$ /?articleID=$1 [L]
Gdy tworzę przyjazne linki bardzo często (jeśli nie zawsze) korzystam z prefiksów, dzięki którym wiem jaka to sekcja. W tym przypadku takim prefiksem jest „artykuł”. Po nim następuje ciąg liczb (które mogą zawierać od jednej cyfry do czterech), a na samym końcu umieszczam tytuł danego artykułu (odpowiednio przygotowany i zoptymalizowany pod wyszukiwarki), który nie ma żadnego zastosowania w działaniu aplikacji www.
Jeżeli intruz teraz będzie chciał przeprowadzić atak (który i tak się nie powiedzie) poprzez wprowadzenie samego apostrofu zostanie wyświetlony domyślny komunikat serwera, że strona/plik nie został znaleziony na serwerze.
Teraz wystarczy przygotować odpowiednią stronę 404 i pozamiatane. Tak działają przyjazne linki na bluejackingu.
Sztuczka SEO
Nie tak dawno przyszła mi do głowy pewna myśl. Dzięki temu rozwiązaniu można „generować” nieskończoną ilość stron. Wystarczy stworzyć teraz jakiś prosty automacik do pokazywania losowych komunikatów (wraz z różnymi meta tagami) i site nam rośnie. Wysoki site to duża ilość punktów w systemach wymiany linków. Duża ilość punktów to wyższe pozycje, lepsze indeksowanie. Sprytne, nie?
Komentarze 6
To się chyba spamowanie wyszukiwarek nazywa, nie? Google wywali taką stronę z rankingu, pogrozi i obłoży klątwą webmastera i jego synów do siódmego pokolenia ;)
Czy jest różnica pomiędzy (.*) a (.+) ?
@Radeq: * - dowolna ilość (łącznie z 0) a kropka - "przynajmniej raz"
> Sprytne, nie?
prymitywne, ale doraźnie, pod systemy jak znalazł ;)
Niestety bluejacking.pl ma problem z polskimi znakami w URL a także nie dodaje na koniec slasha. Od siebie dodam, że też pogłębialiśmy możliwości pliku htaccess: http://magiczne.seoisem.pl/2007/12/13/poskramiamy-htaccess-przekierowania-i-nie-tylko/
Bardzo pomocne. Warto zainwestować trochę czasu w zmianę URLi optymalizowanej witryny.
Co do sztuczki - interesująca, ale ryzykowna :)
Pieknie ladnie ale do strony mozna dobrac sie na dwa sposoby... przez nasz piekny przyjazny url ktory jest filtrowany i oryginalny adres ktory nie jest filtrowany... Piszac ten artykul powinienes przedstawic takie mozliwosci bo innymi slowy niby bezpieczenstwo a przyczyniasz sie do nowych kolejnych dziurwawych servisow. I tyle z twojego bezpieczenstwa...